#ifndef BLOQUELISTAINVERTIDA_H_
#define BLOQUELISTAINVERTIDA_H_

#include "../../BloqArch/IBloque.h"
#include "../../utils/GammaContainer.h"
#include <vector>
#include <stdexcept>


class BloqueListaInvertida: public IBloque {
	private:
		unsigned int _termID;
		std::vector<unsigned int> lDocumentos;

		// Devuelve un vector con las distancias entre los id de documentos
		std::vector<unsigned int> getDistancias() const;
		GammaContainer comprimirDocumentos() const;
		void descomprimirDocumentos(GammaContainer &g);

	public:
		BloqueListaInvertida();
		virtual ~BloqueListaInvertida();

		BloqueListaInvertida& operator=(const BloqueListaInvertida& bli);

		unsigned int getIDTermino() const;
		void setIDTermino(unsigned int termid);

		void guardarIDs(std::vector<unsigned int>& vecDocsIDs);
		void recuperarIDs(std::vector<unsigned int>& vecDocsIDs);

		void agregarID(unsigned int id);
		void eliminarID(unsigned int id);

		// IBloque
		unsigned int serialize(char* &arr);
		void deSerialize(char* arr);
		unsigned int getSize() const;
};

#endif /* BLOQUELISTAINVERTIDA_H_ */
